Storage virtualization has emerged as an efficient and effective way to manage data objects stored on multiple network attached storage (“NAS”) systems. A storage virtualization system may be a combination of hardware and software that acts as an intermediary between a client computer that generates and interacts with data objects or files, and the associated NAS system that stores the data objects. If a second NAS system is connected, then the storage virtualization system can migrate, copy or synchronize data objects between the first and second NAS systems without affecting the client's access to those data objects. The storage virtualization system operates transparently without the user's knowledge or intervention to seamlessly redirect the user's data objects from a first NAS system (the “source server,” “source” or “src”) to a second NAS system (the “destination server,” “destination” or “dst”).
One will appreciate that a NAS system will be able to understand a certain set of rules, procedure calls and computer instructions, also known as the network file system protocol. There are many different types of network file system protocols. In a basic configuration, the client computer and its associated NAS devices will all understand the same network file system protocol. As a result, in a single-protocol NAS system, all commands, file names and instructions will be recognized by each component of the NAS system, and each component will be compatible with the other. Single-protocol NAS systems may be common in smaller organizations, but it is more common for organizations to incorporate client computers and NAS systems of different network file system protocols. Such protocols may include the Network File System (“NFS”) protocol and the Common Internet File System (“CIFS”) protocol. It is also common for an organization to incorporate NAS systems that recognize both NFS and CIFS (“NFS+CIFS”), which may be called “mixed-protocol NAS systems.” One skilled in the art will appreciate that NFS and CIFS protocols apply different rules and specifications that may not be cross-compatible. For example, data objects stored using the NFS protocol may be organized and named differently that those saved using the CIFS protocol. Similarly, mixed protocol NAS systems will typically keep NFS data objects and CIFS data objects separate, or may only store data objects of a single protocol, because of the incompatibilities between each protocol. As such, keeping track of data objects between or across different protocols is difficult, if not impossible.
Effective storage virtualization operations require that the storage virtualization system seamlessly communicate with the client computer and its associated NAS systems. The storage virtualization system will need to communicate with the associated NAS system in order to discover what data objects are stored in it. For those organizations having NAS systems using different or mixed protocols, this task becomes more difficult, the storage virtualization system will need to work with multiple protocols. Presently, some storage virtualization systems can issue both CIFS and NFS commands and instructions and thus work with both CIFS and NFS systems. These storage virtualization systems will typically only manage data from one NFS component to another NFS component, or alternatively, one CIFS component to another CIFS component. In other words, when the storage virtualization system works between NFS components, it issues NFS commands, and when the storage virtualization system works between CIFS components, it issues CIFS commands. Even when managing certain mixed-protocol NAS systems, the storage virtualization system will use the NFS protocol to manage the data objects stored using NFS, and the CIFS protocol to manage the data objects stored using CIFS. The storage virtualization system must be able to recognize what component it is managing in order to apply the correct protocol. This can slow and even limit storage virtualization operations since the storage virtualization system must be configured to use the correct protocol. Further, there is no cross-compatible storage virtualization system that will permit CIFS to NFS transfers or vice-versa. This is because no storage virtualization system can adequately reconcile the differences between the NFS and CIFS protocols.
The limitations of present storage virtualization systems force organizations to adhere to a single protocol. However, as organizations grow and merge, it becomes almost impossible to mandate allegiance to a single protocol. It is more common for organizations to maintain a NAS environment where clients and NAS systems run different or mixed network file system protocols, each with its own vendor-specific idiosyncrasies and specifications. Problems arise in mixed-protocol environments because data objects stored on a CIFS system cannot easily be synchronized or migrated to a NFS system. Similarly, data objects stored on a NFS system are not easily transferred or mirrored with a CIFS system. Additionally, data objects stored on a mixed NFS+CIFS system are not easily accessed or discoverable if the storage virtualization system does not know which protocol to use. Even though the data objects themselves may be moved, the differences in the protocols will cause important file attributes or metadata to go unrecognized or ignored, resulting in a loss of access to data objects after migration. As a result, even so-called multi-protocol storage virtualization systems may not keep an accurate record of the data objects stored in its associated NAS systems.
What is therefore needed is a way to provide mixed-protocol functionality to present and future storage virtualization systems, thereby improving multi-protocol storage virtualization systems. What is needed is a way for present and future storage virtualization systems to seamlessly work with NFS, CIFS or other types of network file system protocols in order to promote cross-protocol compatibility. What is needed is a way to identify the data objects stored on a NAS system regardless of protocol, without losing the data objects' associated metadata, file attributes or other associated file information.